package com.sugar.real.estate.module.business.controller.admin.readyhouse.vo;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.math.BigDecimal;
import java.util.List;

@Schema(description = "管理后台 - 现房新增/修改 Request VO")
@Data
public class ReadyHouseSaveReqVO {

    @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "26021")
    private Long id;

    @Schema(description = "房屋中文名", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "房屋中文名不能为空")
    private String nameZhCn;

    @Schema(description = "房屋英文名", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "房屋英文名不能为空")
    private String nameEnUs;

    @Schema(description = "房屋图片（多个逗号分隔）", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "房屋图片不能为空")
    @Size(min = 1, message = "房屋图片不能为空")
    private List<String> showImages;

    @Schema(description = "房屋视频（多个逗号分隔）", requiredMode = Schema.RequiredMode.REQUIRED)
    /*@NotNull(message = "房屋视频不能为空")
    @Size(min = 1, message = "房屋视频不能为空")*/
    private List<String> showVideos;

    @Schema(description = "房屋户型图（多个逗号分隔）", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
    /*@NotNull(message = "房屋户型图不能为空")
    @Size(min = 1, message = "房屋户型图不能为空")*/
    private List<String> showImagesHouseType;

    @Schema(description = "户型（字典：1）")
    @NotNull(message = "户型不能为空")
    private String houseType;

    @Schema(description = "指导价格（单位：元）", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "指导价格不能为空")
    private BigDecimal priceMin;

    @Schema(description = "最大价格（单位：元）", requiredMode = Schema.RequiredMode.REQUIRED)
    //@NotNull(message = "最大价格不能为空")
    private BigDecimal priceMax;

    @Schema(description = "中文标签（多个逗号分隔）", requiredMode = Schema.RequiredMode.REQUIRED)
    /*@NotNull(message = "中文标签不能为空")
    @Size(min = 1, message = "中文标签不能为空")*/
    private List<String> tagsZhCn;

    @Schema(description = "英文标签（多个逗号分隔）", requiredMode = Schema.RequiredMode.REQUIRED)
    /*@NotNull(message = "英文标签不能为空")
    @Size(min = 1, message = "英文标签不能为空")*/
    private List<String> tagsEnUs;

    @Schema(description = "项目类型（字典：2）", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
    @NotNull(message = "项目类型不能为空")
    private String projectType;

    @Schema(description = "销售方式中文名", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "销售方式中文名不能为空")
    private String salesMethodZhCn;

    @Schema(description = "销售方式英文名", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "销售方式英文名不能为空")
    private String salesMethodEnUs;

    @Schema(description = "房屋面积（单位：㎡）", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "房屋面积不能为空")
    private BigDecimal houseArea;

    @Schema(description = "土地面积（单位：㎡）", requiredMode = Schema.RequiredMode.REQUIRED)
    private String landArea;

    @Schema(description = "内容中文详情", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "内容中文详情不能为空")
    private String contentZhCn;

    @Schema(description = "内容英文详情", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "内容英文详情不能为空")
    private String contentEnUs;

    @Schema(description = "所属省份ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "10087")
    private Long provinceId;

    @Schema(description = "所属市ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "19")
    private Long cityId;

    @Schema(description = "所属区县ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "18958")
    private Long countyId;

    @Schema(description = "省市区", requiredMode = Schema.RequiredMode.REQUIRED)
    private String[] location;

    @Schema(description = "省市区Ids", requiredMode = Schema.RequiredMode.REQUIRED)
    private Long[] locationIds;

    @Schema(description = "坐标点（经纬度逗号分隔）", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "坐标点不能为空")
    private String point;

    @Schema(description = "定位详情", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "定位详情不能为空")
    private String pointDetail;

    @Schema(description = "关联的资讯ID", requiredMode = Schema.RequiredMode.REQUIRED)
    private Long[] infoIds;

    @Schema(description = "上下架（0下架 1上架）", requiredMode = Schema.RequiredMode.REQUIRED)
    private Boolean isShow;
    /**
     * 是否显示价格（0否 1是）
     */
    private Boolean isShowPrice;
    /**
     * 卧室数量
     */
    private String bedroomCount;
    /**
     * 卫生间数量
     */
    private String bathroom;
    /**
     * 客厅数量
     */
    private String livingRoom;

    @Schema(description = "热门推荐", requiredMode = Schema.RequiredMode.REQUIRED)
    private Boolean isHot;
}